﻿using System;
using System.Data;
using System.Text;
using System.Data.SqlClient;
using ZX.HIS.IDAL;
using ZX.HIS.DBUtility;
using ZX.HIS.Common;
using System.Collections.Generic;//Please add references
namespace ZX.HIS.SQLServerDAL
{
    /// <summary>
    /// 数据访问类:PatientInfo
    /// </summary>
    public partial class PatientInfo : IPatientInfo
    {
        public PatientInfo()
        { }

        #region 自写方法
        /// <summary>
        /// 添加患者信息.返回自增ID值
        /// </summary>
        /// <param name="PIModel"></param>
        /// <returns></returns>
        public int PatientInfoAdd(ZX.HIS.Model.PatientInfo PIModel)
        {
            string ComText = "Proc_PatientInfoAdd";
            SqlParameter[] parameters ={
                        new SqlParameter("@HospitalId",SqlDbType.Int,8){Value=PIModel.HospitalId},
                        new SqlParameter("@UserId",SqlDbType.Int,8){Value=PIModel.UserId},
                        new SqlParameter("@PatientChiName",SqlDbType.VarChar,20){Value=PIModel.PatientChiName},
                        new SqlParameter("@PatientSex",SqlDbType.Int,2){Value=PIModel.PatientSex},
                        new SqlParameter("@PatientAge",SqlDbType.Int,4){Value=PIModel.PatientAge},
                        new SqlParameter("@PatientPhone",SqlDbType.VarChar,20){Value=PIModel.PatientPhone}
                                      };
            object obj = SqlDBhelper.RunProcedureScalar(ComText, parameters);
            if (obj != null)
            {
                return Convert.ToInt32(obj);
            }
            else
            {
                return 0;
            }
        }
        /// <summary>
        /// 修改患者信息
        /// </summary>
        /// <param name="PIModel"></param>
        /// <returns></returns>
        public bool PatientInfoUpt(ZX.HIS.Model.PatientInfo PIModel)
        {
            string ComText = "Proc_PatientInfoUpt";
            SqlParameter[] parameters ={
                                        new SqlParameter("@PatientChiNam",SqlDbType.VarChar,20){Value=PIModel.PatientChiName},
                                        new SqlParameter("@PatientSex",SqlDbType.Int,2){Value=PIModel.PatientSex},
                                        new SqlParameter("@PatientAge",SqlDbType.Int,4){Value=PIModel.PatientAge},
                                        new SqlParameter("@PatientPhone",SqlDbType.VarChar,20){Value=PIModel.PatientPhone},
                                        new SqlParameter("@PatientId",SqlDbType.Int,8){Value=PIModel.PatientId},
                                     };
            return SqlDBhelper.RunProcedureNonQuery(ComText,parameters);
        }
        /// <summary>
        /// 获得一个患者信息实体类
        /// </summary>
        /// <param name="PatientId"></param>
        /// <returns></returns>
        public ZX.HIS.Model.PatientInfo GetPatientInfoModel(int PatientId)
        {
            StringBuilder strSql = new StringBuilder();
            string ComText = "Proc_PatientInfoModel";
            SqlParameter[] parameters = {
                        new SqlParameter("@PatientId", SqlDbType.Int,8){Value=PatientId}
                };

            ZX.HIS.Model.PatientInfo model = new ZX.HIS.Model.PatientInfo();
            DataSet ds = SqlDBhelper.RunProcedure(ComText, parameters, "db");
            if (ds.Tables[0].Rows.Count > 0)
            {
                return DataRowToModel(ds.Tables[0].Rows[0]);
            }
            else
            {
                return null;
            }
        }
        /// <summary>
        /// 得到一个对象实体
        /// </summary>
        public ZX.HIS.Model.PatientInfo DataRowToModel(DataRow row)
        {
            ZX.HIS.Model.PatientInfo model = new ZX.HIS.Model.PatientInfo();
            if (row != null)
            {
                if (row["PatientId"] != null && row["PatientId"].ToString() != "")
                {
                    model.PatientId = int.Parse(row["PatientId"].ToString());
                }
                if (row["HospitalId"] != null && row["HospitalId"].ToString() != "")
                {
                    model.HospitalId = int.Parse(row["HospitalId"].ToString());
                }
                if (row["UserId"] != null && row["UserId"].ToString() != "")
                {
                    model.UserId = int.Parse(row["UserId"].ToString());
                }
                if (row["PatientChiName"] != null)
                {
                    model.PatientChiName = row["PatientChiName"].ToString();
                }
                if (row["PatientSex"] != null)
                {
                    model.PatientSex = row["PatientSex"].ToString();
                }
                if (row["PatientAge"] != null && row["PatientAge"].ToString() != "")
                {
                    model.PatientAge = int.Parse(row["PatientAge"].ToString());
                }
                if (row["PatientPhone"] != null)
                {
                    model.PatientPhone = row["PatientPhone"].ToString();
                }
                if (row["SeeDoctorTime"] != null)
                {
                    model.SeeDoctorTime = Convert.ToDateTime(row["SeeDoctorTime"]);
                }
                if (row["CaseContent"] != null)
                {
                    model.CaseContent = row["CaseContent"].ToString();
                }
            }
            return model;
        }
        /// <summary>
        /// 查询分页
        /// </summary>
        /// <param name="PageIndex">索引页数</param>
        /// <param name="PageSize">索引行数</param>
        /// <param name="PIModel">查询条件</param>
        /// <returns></returns>
        public PageClass<ZX.HIS.Model.PatientInfo> PatientInfoPageList(int PageIndex, int PageSize, ZX.HIS.Model.PatientInfo PIModel)
        {
            string ComText = "Proc_PatientInfoPageList";
            SqlParameter[] parameters ={
                           new SqlParameter("@PageIndex",SqlDbType.Int,8){Value=PageIndex},
                           new SqlParameter("@PageSize",SqlDbType.Int,8){Value=PageSize},
                           new SqlParameter("@PatientChiName",SqlDbType.Int,8){Value=PIModel.PatientChiName},
                           new SqlParameter("@HospitalId",SqlDbType.Int,8){Value=PIModel.HospitalId},
                           new SqlParameter("@UserId",SqlDbType.Int,8){Value=PIModel.UserId}
                                      };
            int PageNum = 0;
            List<ZX.HIS.Model.PatientInfo> PList = new List<Model.PatientInfo>();
            DataTable dt = SqlDBhelper.RunProcedure(ComText, parameters, PageSize, PageIndex, out  PageNum);
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                PIModel = DataRowToModel(dt.Rows[i]);
                PList.Add(PIModel);
            }
            PageClass<ZX.HIS.Model.PatientInfo> Page = new PageClass<Model.PatientInfo>();
            Page.PageIndex = PageIndex;
            Page.PageSize = PageSize;
            Page.PageNum = PageNum;
            Page.PageCount = PageNum / PageSize;
            int PageCount = PageNum % PageSize;
            Page.PageList = PList;
            if (PageCount > 0)
            {
                Page.PageCount = Page.PageCount + 1;
            }
            return Page;
        }
        #endregion
        #region  BasicMethod

        ///// <summary>
        ///// 得到最大ID
        ///// </summary>
        //public int GetMaxId()
        //{
        //return DbHelperSQL.GetMaxID("PatientId", "tbPatientInfo"); 
        //}

        ///// <summary>
        ///// 是否存在该记录
        ///// </summary>
        //public bool Exists(int PatientId)
        //{
        //    StringBuilder strSql=new StringBuilder();
        //    strSql.Append("select count(1) from tbPatientInfo");
        //    strSql.Append(" where PatientId=@PatientId");
        //    SqlParameter[] parameters = {
        //            new SqlParameter("@PatientId", SqlDbType.Int,4)
        //    };
        //    parameters[0].Value = PatientId;

        //    return DbHelperSQL.Exists(strSql.ToString(),parameters);
        //}


        ///// <summary>
        ///// 增加一条数据
        ///// </summary>
        //public int Add(ZX.HIS.Model.PatientInfo model)
        //{
        //    StringBuilder strSql=new StringBuilder();
        //    strSql.Append("insert into tbPatientInfo(");
        //    strSql.Append("HospitalId,UserId,PatientChiName,PatientSex,PatientAge,PatientPhone)");
        //    strSql.Append(" values (");
        //    strSql.Append("@HospitalId,@UserId,@PatientChiName,@PatientSex,@PatientAge,@PatientPhone)");
        //    strSql.Append(";select @@IDENTITY");
        //    SqlParameter[] parameters = {
        //            new SqlParameter("@HospitalId", SqlDbType.Int,4),
        //            new SqlParameter("@UserId", SqlDbType.Int,4),
        //            new SqlParameter("@PatientChiName", SqlDbType.VarChar,50),
        //            new SqlParameter("@PatientSex", SqlDbType.VarChar,20),
        //            new SqlParameter("@PatientAge", SqlDbType.Int,4),
        //            new SqlParameter("@PatientPhone", SqlDbType.VarChar,12)};
        //    parameters[0].Value = model.HospitalId;
        //    parameters[1].Value = model.UserId;
        //    parameters[2].Value = model.PatientChiName;
        //    parameters[3].Value = model.PatientSex;
        //    parameters[4].Value = model.PatientAge;
        //    parameters[5].Value = model.PatientPhone;

        //    object obj = DbHelperSQL.GetSingle(strSql.ToString(),parameters);
        //    if (obj == null)
        //    {
        //        return 0;
        //    }
        //    else
        //    {
        //        return Convert.ToInt32(obj);
        //    }
        //}
        ///// <summary>
        ///// 更新一条数据
        ///// </summary>
        //public bool Update(ZX.HIS.Model.PatientInfo model)
        //{
        //    StringBuilder strSql=new StringBuilder();
        //    strSql.Append("update tbPatientInfo set ");
        //    strSql.Append("HospitalId=@HospitalId,");
        //    strSql.Append("UserId=@UserId,");
        //    strSql.Append("PatientChiName=@PatientChiName,");
        //    strSql.Append("PatientSex=@PatientSex,");
        //    strSql.Append("PatientAge=@PatientAge,");
        //    strSql.Append("PatientPhone=@PatientPhone");
        //    strSql.Append(" where PatientId=@PatientId");
        //    SqlParameter[] parameters = {
        //            new SqlParameter("@HospitalId", SqlDbType.Int,4),
        //            new SqlParameter("@UserId", SqlDbType.Int,4),
        //            new SqlParameter("@PatientChiName", SqlDbType.VarChar,50),
        //            new SqlParameter("@PatientSex", SqlDbType.VarChar,20),
        //            new SqlParameter("@PatientAge", SqlDbType.Int,4),
        //            new SqlParameter("@PatientPhone", SqlDbType.VarChar,12),
        //            new SqlParameter("@PatientId", SqlDbType.Int,4)};
        //    parameters[0].Value = model.HospitalId;
        //    parameters[1].Value = model.UserId;
        //    parameters[2].Value = model.PatientChiName;
        //    parameters[3].Value = model.PatientSex;
        //    parameters[4].Value = model.PatientAge;
        //    parameters[5].Value = model.PatientPhone;
        //    parameters[6].Value = model.PatientId;

        //    int rows=DbHelperSQL.ExecuteSql(strSql.ToString(),parameters);
        //    if (rows > 0)
        //    {
        //        return true;
        //    }
        //    else
        //    {
        //        return false;
        //    }
        //}

        ///// <summary>
        ///// 删除一条数据
        ///// </summary>
        //public bool Delete(int PatientId)
        //{

        //    StringBuilder strSql=new StringBuilder();
        //    strSql.Append("delete from tbPatientInfo ");
        //    strSql.Append(" where PatientId=@PatientId");
        //    SqlParameter[] parameters = {
        //            new SqlParameter("@PatientId", SqlDbType.Int,4)
        //    };
        //    parameters[0].Value = PatientId;

        //    int rows=DbHelperSQL.ExecuteSql(strSql.ToString(),parameters);
        //    if (rows > 0)
        //    {
        //        return true;
        //    }
        //    else
        //    {
        //        return false;
        //    }
        //}
        ///// <summary>
        ///// 批量删除数据
        ///// </summary>
        //public bool DeleteList(string PatientIdlist )
        //{
        //    StringBuilder strSql=new StringBuilder();
        //    strSql.Append("delete from tbPatientInfo ");
        //    strSql.Append(" where PatientId in ("+PatientIdlist + ")  ");
        //    int rows=DbHelperSQL.ExecuteSql(strSql.ToString());
        //    if (rows > 0)
        //    {
        //        return true;
        //    }
        //    else
        //    {
        //        return false;
        //    }
        //}


        ///// <summary>
        ///// 得到一个对象实体
        ///// </summary>
        //public ZX.HIS.Model.PatientInfo GetModel(int PatientId)
        //{

        //    StringBuilder strSql=new StringBuilder();
        //    strSql.Append("select  top 1 PatientId,HospitalId,UserId,PatientChiName,PatientSex,PatientAge,PatientPhone from tbPatientInfo ");
        //    strSql.Append(" where PatientId=@PatientId");
        //    SqlParameter[] parameters = {
        //            new SqlParameter("@PatientId", SqlDbType.Int,4)
        //    };
        //    parameters[0].Value = PatientId;

        //    ZX.HIS.Model.PatientInfo model=new ZX.HIS.Model.PatientInfo();
        //    DataSet ds=DbHelperSQL.Query(strSql.ToString(),parameters);
        //    if(ds.Tables[0].Rows.Count>0)
        //    {
        //        return DataRowToModel(ds.Tables[0].Rows[0]);
        //    }
        //    else
        //    {
        //        return null;
        //    }
        //}




        ///// <summary>
        ///// 获得数据列表
        ///// </summary>
        //public DataSet GetList(string strWhere)
        //{
        //    StringBuilder strSql=new StringBuilder();
        //    strSql.Append("select PatientId,HospitalId,UserId,PatientChiName,PatientSex,PatientAge,PatientPhone ");
        //    strSql.Append(" FROM tbPatientInfo ");
        //    if(strWhere.Trim()!="")
        //    {
        //        strSql.Append(" where "+strWhere);
        //    }
        //    return DbHelperSQL.Query(strSql.ToString());
        //}

        ///// <summary>
        ///// 获得前几行数据
        ///// </summary>
        //public DataSet GetList(int Top,string strWhere,string filedOrder)
        //{
        //    StringBuilder strSql=new StringBuilder();
        //    strSql.Append("select ");
        //    if(Top>0)
        //    {
        //        strSql.Append(" top "+Top.ToString());
        //    }
        //    strSql.Append(" PatientId,HospitalId,UserId,PatientChiName,PatientSex,PatientAge,PatientPhone ");
        //    strSql.Append(" FROM tbPatientInfo ");
        //    if(strWhere.Trim()!="")
        //    {
        //        strSql.Append(" where "+strWhere);
        //    }
        //    strSql.Append(" order by " + filedOrder);
        //    return DbHelperSQL.Query(strSql.ToString());
        //}

        ///// <summary>
        ///// 获取记录总数
        ///// </summary>
        //public int GetRecordCount(string strWhere)
        //{
        //    StringBuilder strSql=new StringBuilder();
        //    strSql.Append("select count(1) FROM tbPatientInfo ");
        //    if(strWhere.Trim()!="")
        //    {
        //        strSql.Append(" where "+strWhere);
        //    }
        //    object obj = DbHelperSQL.GetSingle(strSql.ToString());
        //    if (obj == null)
        //    {
        //        return 0;
        //    }
        //    else
        //    {
        //        return Convert.ToInt32(obj);
        //    }
        //}
        ///// <summary>
        ///// 分页获取数据列表
        ///// </summary>
        //public DataSet GetListByPage(string strWhere, string orderby, int startIndex, int endIndex)
        //{
        //    StringBuilder strSql=new StringBuilder();
        //    strSql.Append("SELECT * FROM ( ");
        //    strSql.Append(" SELECT ROW_NUMBER() OVER (");
        //    if (!string.IsNullOrEmpty(orderby.Trim()))
        //    {
        //        strSql.Append("order by T." + orderby );
        //    }
        //    else
        //    {
        //        strSql.Append("order by T.PatientId desc");
        //    }
        //    strSql.Append(")AS Row, T.*  from tbPatientInfo T ");
        //    if (!string.IsNullOrEmpty(strWhere.Trim()))
        //    {
        //        strSql.Append(" WHERE " + strWhere);
        //    }
        //    strSql.Append(" ) TT");
        //    strSql.AppendFormat(" WHERE TT.Row between {0} and {1}", startIndex, endIndex);
        //    return DbHelperSQL.Query(strSql.ToString());
        //}

        ///*
        ///// <summary>
        ///// 分页获取数据列表
        ///// </summary>
        //public DataSet GetList(int PageSize,int PageIndex,string strWhere)
        //{
        //    SqlParameter[] parameters = {
        //            new SqlParameter("@tblName", SqlDbType.VarChar, 255),
        //            new SqlParameter("@fldName", SqlDbType.VarChar, 255),
        //            new SqlParameter("@PageSize", SqlDbType.Int),
        //            new SqlParameter("@PageIndex", SqlDbType.Int),
        //            new SqlParameter("@IsReCount", SqlDbType.Bit),
        //            new SqlParameter("@OrderType", SqlDbType.Bit),
        //            new SqlParameter("@strWhere", SqlDbType.VarChar,1000),
        //            };
        //    parameters[0].Value = "tbPatientInfo";
        //    parameters[1].Value = "PatientId";
        //    parameters[2].Value = PageSize;
        //    parameters[3].Value = PageIndex;
        //    parameters[4].Value = 0;
        //    parameters[5].Value = 0;
        //    parameters[6].Value = strWhere;	
        //    return DbHelperSQL.RunProcedure("UP_GetRecordByPage",parameters,"ds");
        //}*/

        #endregion  BasicMethod
        #region  ExtensionMethod

        #endregion  ExtensionMethod
    }
}

